草庐IT

c++ - 从 C++ 类制作 Visual C++ DLL

全部标签

java - 从 Java 调用 .NET DLL

我正在尝试使用来自Java代码的.NETDLL(通过C++native代码)。流程是这样的。使用visualstudio2010中的C#类库类型项目创建.netDLL。创建nativeC++代码(控制台应用程序)以使用此DLLUsingthisstep-by-stepguidefromMicrosoft此代码能够成功调用DLL代码。用一些本地方法编写Java代码,生成头文件并在C++DLL项目中实现头文件(从相关方法的示例中移动原始代码,使一些变量成为全局变量)。此DLL已成功加载,但代码在为托管类创建接口(interface)指针时失败。请参阅微软指南中的snipper//Creat

来自 native C++ 加载的 DLL 的 C# 形式

这个问题来自这个线程:NativeC++useC#dllviaproxyC++manageddll简而言之,我正在通过DLL将(我的)C#扩展加载到native进程中。扩展需要显示一个表单,以便用户可以控制它。我使用的是标准.NET表单,没有第3方库或任何东西,而且我的表单没有显示。更糟糕的是,它会挂起目标进程。它没有使用任何CPU,所以我感觉它在等待某个函数返回,但从未这样做过。同样有趣的是弹出了“Initializemethod”消息框,但没有弹出“Test”消息框。我已经测试了所有我能想到的东西(STAthread、线程、DisableThreadLibraryCalls,以及不

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果文章目录最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏1(附项目源码)【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏2(附项目源码)

c# - 客户端获取从 C++ COM dll 返回的字节数组

我在C++COM头文件和IDL文件中有这个声明://Headerfile:#defineMAX_LENGTH320typedefBYTEPRE_KEY[MAX_LENGTH];//IDLfile:#defineMAX_COUNT10HRESULTSave([in]DWORDdwCommand,[in]floatfdata[MAX_COUNT],[out]PRE_KEY*phKey);这是C#客户端代码://AfterC#interopcompilation,themethod'ssignatureinC#becomes:Save(uintdwCommand,float[]fdata,o

c++ - 动态链接到 visa32.dll 导致崩溃

我正在尝试使用NI-VISA5.1.1通过USB与示波器通信。我的32位应用程序是使用C++和MinGW编译器(标准Qt4.7SDK)在Qt框架中编写的。当我静态链接到visa32.lib时,我的应用程序与设备通信没有问题。我的动态链接代码在Windows764位平台上也运行良好,但在运行WindowsXPSP3(32位)的两台不同计算机上崩溃。我已经追踪到导致崩溃的代码行(这是对viWrite的第一次调用)。这个问题似乎与DLL本身中全局变量的设置有关。这或许可以解释为什么它在Windows7中工作,因为在这种情况下,32位DLL文件只是一个调用64位VISADLL文件的stub。这

c++ - Operator = 不是 DLL 中导出的 C++ __interface 的成员

我一直在为库编写一些代码,并尝试使用默认的Win32控制台应用程序来运行所有内容。因为我已经完成了所有类(class),所以我想将所有内容提取到一个DLL中,因此我开始使用通常的宏进行改编:#ifdefMYLIB_EXPORTS#defineDllExport__declspec(dllexport)#else#defineDllExport__declspec(dllimport)#endif我在我的代码中使用一个接口(interface),它是这样定义的:__interfaceDllExportISerializable{voidSerialize(/*...*/);/*someo

c++ - 在 Visual Studio 2010 中从 .h 和 .lib 创建 .dll

我正在尝试从我从tngaming为他们的游戏背心获得的头文件和库文件创建一个.dll文件。到目前为止,我一直在使用thisguide,但我没有创建新的头文件,而是将我的tngaming文件添加到头文件所在的文件夹,然后使用“添加现有项目”将其添加到visualstudio内的文件夹。之后,我使用了属性->链接器->输入,我在其中添加了我的lib文件,这似乎也能正常工作。然后在tngaming.cpp中我添加了一行#include"tngaming.h"现在可以构建我的.dll,但它不起作用。当我查看它时,有\行显示诸如“堆栈内存已损坏”之类的内容。我是在正确地创建我的.dll还是我做错

c++ - 用 C 或汇编制作一个简单的 CRT0

我回到了C/C++和ASM,我想玩点火。我发现,当您将代码编译并链接到Windows的可执行文件中时,它会动态链接到某些库,这些库必须存在于预期运行该应用程序的任何计算机上。您可以指定编译器不链接它们并为此创建您自己的库。除此之外(如果我在这里所说的一切都错了,请纠正我)还有一个目标文件,它始终被编译并链接到我们应用程序的主要代码中。它是crt0.o(C运行时)文件,据我所知,它准备堆栈,获取argc和argv并调用main函数(可能还有其他东西)。我也相信这是系统在执行应用程序时调用的第一段代码。因此,我正在尝试创建一个简单的crt0.obj并将其链接到一个简单的C++对象文件int

c# - 如何将非托管 C++ dll 添加到 Silverlight 5 项目中

我需要在Silverlight5项目中使用我自己的非托管C++dll。因为我可以使用dllImport来使用它,即[DllImport(@"D:\myLib\Debug\myLib.dll")]staticexternintadd(IntPtrptr);它工作正常,因为我在DllImport中提到了绝对路径。但我的问题是,我想使用相对路径。因为我需要在我的silverlight5项目中添加非托管C++dll并从那里指定路径。我从过去两天开始调查,但没有找到解决此问题的方法。只有我找到了下面提到的一个相关链接,但它也没有帮助。http://msdn.microsoft.com/en-us

c++ - 释放 DLL 创建的对象

我的DLL是用LoadLibrary加载的-它们是否仍然可以共享运行时,或者我实际上是否必须确保对象在分配它们的同一个DLL中被删除?在我的示例中,我有一个在DLL模块中实现的公共(public)基类,然后由Lua对象镜像,Lua确定其生命周期。因此,我需要在Lua垃圾收集器决定释放对象时释放该对象,而且我无法预测它将从哪个DLL中进行垃圾收集。我在考虑每个DLL都具有以下函数的拷贝:intReleaseObject(lua_State*L){//objectpointerisstoredinfield[0]lua_rawgeti(L,-1,0);delete(Object*)lua_